/***************************************************************
 *  Copyright (c) 2007 by GroupMe! Team (www.groupme.net)
 *  All rights reserved.
 *
 *  This file is part of the GroupMe! Project. Source code of 
 *  this project is closed and redistribution of this code is
 *  prohibited. 
 *  
 *  Contact: http://www.groupme.net
 *
 *  This copyright notice MUST APPEAR in all copies of the file!
 ***************************************************************/
package net.groupme.similarityComputer;



/**
 * This Interface defines a Soimilarity Computer used to calculate the Score of two Groups
 * 
 * created on 20.02.2008
 * 
 * @author Patrick Siehndel <a
 *         href="mailto:patrick.siehndel@gmx.de">patrick.siehndel@gmx.de</a>
 * 
 * @version 0.1
 * 
 */
public interface SimilarityComputer {
	
	/**
	 * Returns the similarity score according to the resources that are contained in both groups. 
	 * @return the similarity score according to the resources that are contained in both groups. 
	 */
	public int getScoreForResources();

	/**
	 * Returns the similarity score according to the resources that are contained in both groups. 
	 * @return the similarity score according to the resources that are contained in both groups. 
	 */
	public int getScoreForTags();
	
	/**
	 * Combines resource and tag score and returns the overall similarity score. 
	 * @return the overall similarity score. 
	 */
	public int getOverallScore();
	
	/**
	 * Returns a JSON string in which the settings (like weights, etc.) of the SimilarityComputer are serialized.
	 * @return a JSON string in which the settings of the SimilarityComputer are serialized
	 */
	public String printSettings();

}
